شرح دورة أساسيات java

Java هي لغة برمجة كائنية التوجه (Object-Oriented)، متعددة المنصات، مصممة لتكون مستقلة عن النظام الأساسي (platform-independent). يمكن استخدام Java لتطوير التطبيقات المختلفة من تطبيقات الويب والهواتف إلى التطبيقات المكتبية.

الدرس الأول: أساسيات java

Java هي لغة برمجة كائنية التوجه (Object-Oriented)، متعددة المنصات، مصممة لتكون مستقلة عن النظام الأساسي (platform-independent). يمكن استخدام Java لتطوير التطبيقات المختلفة من تطبيقات الويب والهواتف إلى التطبيقات المكتبية.

شرح مفصل:
  • 1. أساسيات Java: "مرحبًا بالعالم"أول خطوة في أي لغة برمجة هي كتابة برنامج "مرحبًا بالعالم".
  • 2. التعليقات (Comments) تستخدم التعليقات لشرح الكود
  • 3. المتغيرات (Variables) المتغيرات هي مساحة لتخزين القيم. يجب تحديد نوع المتغير.
مثال:
public class HelloWorld { public static void main(String[] args) { System.out.println("مرحبًا بالعالم!"); } }
// هذا تعليق

الدرس الثاني: المحددات في java

المحددات (Modifiers) هي كلمات رئيسية في Java تُستخدم لتحديد خصائص الفئات (Classes)، المتغيرات (Variables)، الأساليب (Methods)، أو المُنشئين (Constructors). تنقسم إلى نوعين رئيسيين:

شرح مفصل:
  • 1. محددات الوصول (Access Modifiers) محدد الوصول مستوى الوصول public يمكن الوصول إلى الكائن من أي مكان. protected يمكن الوصول إليه داخل نفس الحزمة (package) وفي الفئات الفرعية (subclasses) حتى لو كانت خارج الحزمة. default (بدون كتابة أي محدد) يمكن الوصول إليه فقط داخل نفس الحزمة. private يمكن الوصول إليه فقط داخل نفس الفئة (class).
  • 2. المحددات غير الوصولية (Non-Access Modifiers) ass Modifiers) المحدد الوصف final تجعل الفئة غير قابلة للوراثة.
مثال:
public class AccessModifiersExample { public String publicVar = "عام"; protected String protectedVar = "محمي"; String defaultVar = "افتراضي"; private String privateVar = "خاص"; public void displayAccess() { System.out.println("Public: " + publicVar); System.out.println("Protected: " + protectedVar); System.out.println("Default: " + defaultVar); System.out.println("Private: " + privateVar); } } class TestAccess { public static void main(String[] args) { AccessModifiersExample obj = new AccessModifiersExample(); // الوصول إلى المتغيرات System.out.println(obj.publicVar); // مسموح System.out.println(obj.protectedVar); // مسموح (إذا كان في نفس الحزمة) System.out.println(obj.defaultVar); // مسموح (إذا كان في نفس الحزمة) // System.out.println(obj.privateVar); // غير مسموح - خطأ في الكود } }
class MethodModifiersExample { // أسلوب ثابت static void staticMethod() { System.out.println("هذا أسلوب ثابت"); } // أسلوب نهائي final void finalMethod() { System.out.println("هذا أسلوب نهائي"); } // أسلوب متزامن synchronized void synchronizedMethod() { System.out.println("هذا أسلوب متزامن"); } } class TestMethods extends MethodModifiersExample { // محاولة إعادة تعريف الأسلوب النهائي (غير مسموح) // void finalMethod() { } }

الدرس الثالث: التصفح في java

التصفح في Java يشير إلى عملية المرور عبر عناصر البيانات في هياكل مثل المصفوفات (Arrays)، القوائم (Lists)، المجموعات (Collections)، أو الخرائط (Maps). تُستخدم هذه العملية للوصول إلى العناصر أو تعديلها أو معالجتها.

شرح مفصل:
  • 1. تصفح المصفوفات (Arrays Traversal) 1. باستخدام حلقة for العادية
  • 2. باستخدام حلقة for-each حلقة for-each تُستخدم لتصفح العناصر بسهولة.
  • 2. تصفح القوائم (List Traversal) القوائم (Lists) هي جزء من مكتبة Java Collections.
مثال:
public class ArrayTraversal { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50}; for (int i = 0; i < numbers.length; i++) { System.out.println("العدد: " + numbers[i]); } } }
public class ArrayTraversalForEach { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50}; for (int number : numbers) { System.out.println("العدد: " + number); } } }

الدرس الخامس: الأنماط المتقدمة

تتضمن الأنماط المتقدمة في Java تقنيات ومفاهيم تُستخدم لإنشاء وتصميم أنظمة برمجية معقدة. هذه الأنماط تساعد في تحسين هيكل الكود وقابليته للصيانة وإعادة الاستخدام.

شرح مفصل:
  • 1. الأنماط التصميمية (Design Patterns) يضمن وجود كائن واحد فقط من فئة معينة في البرنامج.
  • 1.2. Factory Pattern يُستخدم لإنشاء الكائنات دون الكشف عن المنطق وراء إنشائها.
  • 1.3. Observer Pattern يسمح لكائن واحد (Subject) بإبلاغ كائنات متعددة (Observers) عند حدوث تغيير.
مثال:
class Singleton { private static Singleton instance; private Singleton() { // Constructor خاص } public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } public void showMessage() { System.out.println("مرحبًا من Singleton!"); } } public class SingletonExample { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); singleton.showMessage(); } }
interface Shape { void draw(); } class Circle implements Shape { public void draw() { System.out.println("رسم دائرة"); } } class Square implements Shape { public void draw() { System.out.println("رسم مربع"); } } class ShapeFactory { public static Shape getShape(String shapeType) { if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("SQUARE")) { return new Square(); } return null; } } public class FactoryPatternExample { public static void main(String[] args) { Shape circle = ShapeFactory.getShape("CIRCLE"); circle.draw(); Shape square = ShapeFactory.getShape("SQUARE"); square.draw(); } }